DoCAN 相关规范分析
ISO-11898 总线对于与 OSI 的第一层和第二层,即物理层和数据链路层。对于物理层来说,定义了 CAN 总线信号在双绞线上的电压形式,对于数据链路层来说,定义了 CAN 帧的各个域的用途。
ISO-15765-2 是诊断服务在 CAN 总线上传输的实现方式,对应于 OSI 是第四层,传输层。对于 classical CAN 总线来说,它一帧只能承载 8 个字节,而上层的诊断服务却可能超过 8 个字节,这时候就需要传输层对数据进行分包重组流控制。ISO 15765-2 还定义了应用层、传输层、数据链路层之间的编程接口,其实就是 request, confirm, indication 这几个原语的定义。ISO 15765-3 和 ISO 14229-3 的内容是一样的,后者取代了前者。ISO 15765-4 定义了基于 CAN 总线实现 OBD 通信的方式。
ISO 14229-1 对应于 OSI 的第七层,即应用层,它定义了诊断服务的格式。ISO 14229-2 定义了诊断会话中的各种时间参数,比如 ECU 的响应时间等。ISO 14229-3 一直到 ISO 14229-7 分别定义了 UDS 在 CAN,FlexRay,Internet Protocol,K-Line,LIN 上的实现要求。
这三部分协议一起使用,就可以实现完整的诊断功能了。总结来说,ISO 14229-1 生成诊断服务,ISO 15765-2 对诊断服务进行分包并把分包后的数据交给 ISO 11898,ISO 11898 给收到的数据加上 CAN 总线特有的包头和包尾,然后通过双绞线以电压差的形式发送出去。